1. Field of the Invention
The present invention relates to software application testing and more particularly to data retrieval during software application testing.
2. Description of the Related Art
The art of software development extends far beyond a mere coding of a functional specification for a computer program. Modern software development conforms to a lifecycle which begins with the functional specification leading into the formulation of a suitable architecture for an application implementing the functional specification. The lifecycle continues with the physical coding of the application and includes iterative testing and modification cycles to ensure the integrity of the code. Finally, the execution of the completed code can be analyzed to facilitate the further revision of the code to improve the performance of the code.
Traditional testing of a computer program during development can include the external monitoring of the integrity of the program and the performance of the program, either subjectively based upon end user impression, or objectively based upon independently acquired metrics. In the latter circumstance, the integrity of the program can include the simulation of user interaction with the user interface of the program to ensure the proper operation of the program logic. Likewise, the performance of the program can include an internal monitoring of the code through software test tooling as is known in the art. Further, the proper handling and management of data consumed in an application can be ensured as can the appropriate display and functionality of user interface elements for the computer program.
More particularly, given the modern complexity of the graphical user interface to a computer program, testing also includes the iterative process of coding the user interface, executing the program, modifying the user interface to account for display imperfections, and the re-execution of the program to determine whether or not the imperfections in the user interface have resolved. Of note, when testing the user interface in an advanced markup language development application such as the asynchronous Javascript and extensible markup language (AJAX) application, complications can arise due to the nature of the AJAX grouping of technologies.
Specifically, AJAX is a group of interrelated Web development methods used on the client-side of a client-server application to create interactive Web applications. With AJAX, Web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing Web page. Data is usually retrieved using the “XMLHttpRequest” object. Of note, AJAX uses a combination of hypertext markup language (HTML) and content style sheets (CSS) to mark up and style information. Additionally, a document object model (DOM) for the data of the page can be accessed with Javascript to dynamically display, and to allow the user to interact with, the information presented. Javascript and the XMLHttpRequest object provide a method for exchanging data asynchronously between browser and server to avoid full page reloads.
During development of the user interface of an AJAX application, it is required during unit testing and testing of the user interface to constantly re-render the page providing the user interface. For every re-rendering operation, services invoked from the page by way of AJAX must be re-invoked over and over again. For quick responding services over wide bandwidth, the latency associated with the repeated service invocation during testing will be of little consequence. However, for services invoked in the page that in turn launch complex database queries, return large data sets, or execute slowly or consume bandwidth in a bandwidth limited environment, the resulting latency can be problematic. To address this problem, some developers tend to place the data retrieved from the service calls in a flat file and re-code the application under test to refer to the flat file—however to do so requires the developer to modify that application code, often in multiple places.